The present invention relates in general to generating an image on a display device and in particular to providing a hardware icon for a display device.
Existing graphics processing systems typically use a frame buffer to store graphics data, e.g., computer generated images, to be displayed on a screen or other display device. The frame buffer generally stores a data value representing a color for each pixel on the screen. To create an image on the display device, the frame buffer is scanned out, pixel by pixel (or line by line), and the values are transmitted to the display device.
To reduce the need for frequent updates to data in the frame buffer, some existing systems provide one or more overlays that cause a different image to be displayed “on top” of some portion of the frame buffer data without modifying the frame buffer data. An overlay includes a memory, either in a designated portion of the frame buffer memory or in a separate memory device, that stores pixel values defining the overlay image. The overlay may also include storage for data describing the position and size of the overlay image. During scanout, a compositor receives both a frame buffer value and an overlay value for each pixel covered by the overlay. If the overlay is active, the compositor selects the overlay value for each pixel in the overlay region and ignores the corresponding frame buffer value. In other regions, the compositor selects the frame buffer value.
Overlays are useful in various situations. For instance, playback of video data (e.g., a DVD movie) requires frequent updating of the video image data. Use of an overlay for video image data eliminates the need for frequent frame buffer updates. As another example, a cursor (e.g., a mouse pointer) is an image that moves around the screen in response to user actions; as the cursor image moves away from a particular pixel, the underlying data for that pixel should be redisplayed. A cursor overlay makes it possible to display the cursor on a portion of the screen without altering the data for the underlying image, which will become visible again as soon as the cursor is moved. Implementation of a cursor overlay is similar to that of other overlays.
If multiple overlays are present, then the compositor must include priority logic selecting one overlay to be displayed on top of the other. For instance, some existing systems support a cursor overlay and a video overlay. In these systems, the priority logic is usually designed so that the cursor is either always over or always under the video overlay.
Existing overlays are generally stored in a section of the frame buffer. Besides increasing the amount of frame buffer memory required, such implementations also necessitate additional arbitration logic within the frame buffer memory controller so that overlay data can be read from the memory for use by the compositor. Overlay data transfers to and from the frame buffer also consume memory bandwidth, which is typically a scarce resource in graphics processing systems.
Therefore, it would be desirable to provide an overlay that does not consume frame buffer memory space or bandwidth. Such an overlay could also provide additional flexibility and features.